import { useRouter } from "vue-router";
import axios from "axios";
import { reactive } from "vue";

//1.创建axios的实例 
const instance = axios.create({
    baseURL: '',
    timeout: 180000,//1000毫秒 =1s
    // headers: {'X-Custom-Header': 'foobar'}
  });

//拦截器 
//2.添加请求拦截器 请求接口之前做一些操作  加上token
instance.interceptors.request.use(
  config=>{
    const token = localStorage.getItem("token");
    if(token)
    {
      config.headers["Authorization"] = "Bearer " + token;
    }
    
    // 如果是FormData，让浏览器自动设置Content-Type
    if (config.data instanceof FormData) {
      // 删除Content-Type，让浏览器自动设置multipart/form-data边界
      delete config.headers['Content-Type'];
    }
    
    console.log('请求配置:', config);
    return config;
  },
  error=>{
   return Promise.reject(error);
  }
)
//3.添加响应拦截器 响应回来 做一些处理
instance.interceptors.response.use(
  response=>{
    return response//.data;
  },
  error=>{ 
    console.error('HTTP请求错误:', error);
    
    // 处理401未授权错误
    if(error.response && error.response.status === 401) {
      console.warn('收到401错误，token可能已过期');
      
      // 清除过期的token
      localStorage.removeItem("token");
      localStorage.removeItem("refreshToken");
      
      // 提示用户重新登录
      import('element-plus').then(({ ElMessage }) => {
        ElMessage.error('登录已过期，请重新登录');
      });
      
      // 跳转到登录页
      setTimeout(() => {
        window.location.href = '/';
      }, 1500);
      
      return Promise.reject(error);
    }
    
    return Promise.reject(error);
    
  }
)
//对外暴露一个实例
// export default instance;
export const http=(method='',url='',data={},params={})=> 
  instance({method,url,data,params})